﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL.Entity;

namespace DAL.Persistencia
{
    public class ServicoDAL
    {

        private NewTierraEntities Con;

        public ServicoDAL()
        {
            Con = new NewTierraEntities();
        }

        public void Salvar(S_Servicos s)
        {
            try
            {
                Con.AddToS_Servicos(s);
                Con.SaveChanges();
            }
            catch 
            {
                throw;
            }
        }

        public void Atualizar(S_Servicos novo)
        {
            S_Servicos antigo = ObterPorId(novo.Servicos_Id);

            antigo.Servicos_Nome = novo.Servicos_Nome;
            antigo.Servicos_descr = novo.Servicos_descr;
            antigo.Servicos_descrCurt = novo.Servicos_descrCurt;
            antigo.Servicos_descrRemarks = novo.Servicos_descrRemarks;
            antigo.Servicos_descrVoucher = novo.Servicos_descrVoucher;
            antigo.Servicos_descrCliente = novo.Servicos_descrCliente;
            antigo.STATUS_id = novo.STATUS_id;
            antigo.Tipo_Id = novo.Tipo_Id;
            antigo.Tipo_categ_id = novo.Tipo_categ_id;
            antigo.Cid_Id = novo.Cid_Id;
            antigo.Pais_Id = novo.Pais_Id;

            Con.SaveChanges();
        }

        public void Excluir(S_Servicos s)
        {
            try
            {
                Con.DeleteObject(s);
                Con.SaveChanges();
            }
            catch 
            {
                throw;
            }
        }

        public S_Servicos ObterPorNome(string nome)
        {
            try
            {
                var query = (from s in Con.S_Servicos
                             join a in Con.S_Status on s.STATUS_id equals a.STATUS_id
                             join t in Con.S_Servicos_Tipo on s.Tipo_Id equals t.Tipo_Id
                             join c in Con.Cidades on s.Cid_Id equals c.CID_id
                             join p in Con.Pais on s.Pais_Id equals p.PAIS_id
                             where s.Servicos_Nome.Equals(nome)
                             select s).SingleOrDefault();

                return query;
            }
            catch
            {
                throw;
            }
        }

        public S_Servicos ObterPorId(int IdServico)
        {
            try
            {
                var query = (from s in Con.S_Servicos
                             join a in Con.S_Status on s.STATUS_id equals a.STATUS_id
                             join t in Con.S_Servicos_Tipo on s.Tipo_Id equals t.Tipo_Id
                             join c in Con.Cidades on s.Cid_Id equals c.CID_id
                             join p in Con.Pais on s.Pais_Id equals p.PAIS_id
                             where s.Servicos_Id == IdServico
                             select s).SingleOrDefault();

                return query;
            }
            catch 
            {
                throw;
            }
        }

        //public S_Servicos ObterPorId(int IdServico)
        //{
        //    try
        //    {
        //       return Con.S_Servicos.Where(s => s.Servicos_Id == IdServico).Single();
        //    }
        //    catch 
        //    {
        //        throw;
        //    }
        //}

    }
}
